home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / program / pastutor.EXE / tutor07.pas < prev    next >
Pascal/Delphi Source File  |  1998-04-02  |  5KB  |  219 lines

  1. {************************************************}
  2. {                                                }
  3. {   Turbo Vision 2.0 Demo                        }
  4. {   Copyright (c) 1992 by Borland International  }
  5. {                                                }
  6. {************************************************}
  7.  
  8. program Tutor07;
  9.  
  10. uses Memory, TutConst, Drivers, Objects, Views, Menus, App, Dialogs,
  11.   Editors, StdDlg;
  12.  
  13. type
  14.   TTutorApp = object(TApplication)
  15.     ClipboardWindow: PEditWindow;
  16.     constructor Init;
  17.     destructor Done; virtual;
  18.     procedure DoAboutBox;
  19.     procedure HandleEvent(var Event: TEvent); virtual;
  20.     procedure InitMenuBar; virtual;
  21.     procedure InitStatusLine; virtual;
  22.     procedure LoadDesktop;
  23.     procedure NewWindow;
  24.     procedure OpenWindow;
  25.     procedure SaveDesktop;
  26.   end;
  27.  
  28. var
  29.   ResFile: TResourceFile;
  30.  
  31. procedure TutorStreamError(var S: TStream); far;
  32. var
  33.   ErrorMessage: String;
  34. begin
  35.   case S.Status of
  36.     stError: ErrorMessage := 'Stream access error';
  37.     stInitError: ErrorMessage := 'Cannot initialize stream';
  38.     stReadError: ErrorMessage := 'Read beyond end of stream';
  39.     stWriteError: ErrorMessage := 'Cannot expand stream';
  40.     stGetError: ErrorMessage := 'Unregistered type read from stream';
  41.     stPutError: ErrorMessage := 'Unregistered type written to stream';
  42.     end;
  43.   DoneVideo;
  44.   PrintStr('Error: ' + ErrorMessage);
  45.   Halt(S.Status);
  46. end;
  47.  
  48. constructor TTutorApp.Init;
  49. var
  50.   R: TRect;
  51. begin
  52.   MaxHeapSize := 8192;
  53.   EditorDialog := StdEditorDialog;
  54.   StreamError := @TutorStreamError;
  55.   RegisterMenus;
  56.   RegisterObjects;
  57.   RegisterViews;
  58.   RegisterApp;
  59.   RegisterEditors;
  60.   RegisterDialogs;
  61.   ResFile.Init(New(PBufStream, Init('TUTORIAL.TVR', stOpenRead, 1024)));
  62.   inherited Init;
  63.   DisableCommands([cmOrderWin, cmStockWin, cmSupplierWin]);
  64.   Desktop^.GetExtent(R);
  65.   ClipboardWindow := New(PEditWindow, Init(R, '', wnNoNumber));
  66.   if ValidView(ClipboardWindow) <> nil then
  67.   begin
  68.     ClipboardWindow^.Hide;
  69.     InsertWindow(ClipboardWindow);
  70.     Clipboard := ClipboardWindow^.Editor;
  71.     Clipboard^.CanUndo := False;
  72.   end;
  73. end;
  74.  
  75. destructor TTutorApp.Done;
  76. begin
  77.   ResFile.Done;
  78.   inherited Done;
  79. end;
  80.  
  81. procedure TTutorApp.DoAboutBox;
  82. begin
  83.   ExecuteDialog(PDialog(ResFile.Get('ABOUTBOX')), nil);
  84. end;
  85.  
  86. procedure TTutorApp.HandleEvent(var Event: TEvent);
  87. var
  88.   R: TRect;
  89. begin
  90.   inherited HandleEvent(Event);
  91.   if Event.What = evCommand then
  92.   begin
  93.     case Event.Command of
  94.       cmOptionsLoad:
  95.         begin
  96.           LoadDesktop;
  97.           ClearEvent(Event);
  98.         end;
  99.       cmOptionsSave:
  100.         begin
  101.           SaveDesktop;
  102.           ClearEvent(Event);
  103.         end;
  104.       cmClipShow:
  105.         with ClipboardWindow^ do
  106.         begin
  107.           Select;
  108.           Show;
  109.           ClearEvent(Event);
  110.         end;
  111.       cmNew:
  112.         begin
  113.           NewWindow;
  114.           ClearEvent(Event);
  115.         end;
  116.       cmOpen:
  117.         begin
  118.           OpenWindow;
  119.           ClearEvent(Event);
  120.         end;
  121.       cmOptionsVideo:
  122.         begin
  123.           SetScreenMode(ScreenMode xor smFont8x8);
  124.           ClearEvent(Event);
  125.         end;
  126.       cmAbout:
  127.         begin
  128.           DoAboutBox;
  129.           ClearEvent(Event);
  130.         end;
  131.     end;
  132.   end;
  133. end;
  134.  
  135. procedure TTutorApp.InitMenuBar;
  136. begin
  137.   MenuBar := PMenuBar(ResFile.Get('MAINMENU'));
  138. end;
  139.  
  140. procedure TTutorApp.InitStatusLine;
  141. var
  142.   R: TRect;
  143. begin
  144.   StatusLine := PStatusLine(ResFile.Get('STATUS'));
  145.   GetExtent(R);
  146.   StatusLine^.MoveTo(0, R.B.Y - 1);
  147. end;
  148.  
  149. procedure TTutorApp.LoadDesktop;
  150. var
  151.   DesktopFile: TBufStream;
  152.   TempDesktop: PDesktop;
  153.   R: TRect;
  154. begin
  155.   DesktopFile.Init('DESKTOP.TUT', stOpenRead, 1024);
  156.   TempDesktop := PDesktop(DesktopFile.Get);
  157.   DesktopFile.Done;
  158.   if ValidView(TempDesktop) <> nil then
  159.   begin
  160.     Desktop^.Delete(ClipboardWindow);
  161.     Delete(Desktop);
  162.     Dispose(Desktop, Done);
  163.     Desktop := TempDesktop;
  164.     Insert(Desktop);
  165.     GetExtent(R);
  166.     R.Grow(0, -1);
  167.     Desktop^.Locate(R);
  168.     InsertWindow(ClipboardWindow);
  169.   end;
  170. end;
  171.  
  172. procedure TTutorApp.NewWindow;
  173. var
  174.   R: TRect;
  175.   TheWindow: PEditWindow;
  176. begin
  177.   R.Assign(0, 0, 60, 20);
  178.   TheWindow := New(PEditWindow, Init(R, '', wnNoNumber));
  179.   InsertWindow(TheWindow);
  180. end;
  181.  
  182. procedure TTutorApp.OpenWindow;
  183. var
  184.   R: TRect;
  185.   FileDialog: PFileDialog;
  186.   TheFile: FNameStr;
  187. const
  188.   FDOptions: Word = fdOKButton or fdOpenButton;
  189. begin
  190.   TheFile := '*.*';
  191.   New(FileDialog, Init(TheFile, 'Open file', '~F~ile name',
  192.     FDOptions, 1));
  193.   if ExecuteDialog(FileDialog, @TheFile) <> cmCancel then
  194.   begin
  195.     R.Assign(0, 0, 75, 20);
  196.     InsertWindow(New(PEditWindow, Init(R, TheFile, wnNoNumber)));
  197.   end;
  198. end;
  199.  
  200. procedure TTutorApp.SaveDesktop;
  201. var
  202.   DesktopFile: TBufStream;
  203. begin
  204.   Desktop^.Delete(ClipboardWindow);
  205.   DesktopFile.Init('DESKTOP.TUT', stCreate, 1024);
  206.   DesktopFile.Put(Desktop);
  207.   DesktopFile.Done;
  208.   InsertWindow(ClipboardWindow);
  209. end;
  210.  
  211. var
  212.   TutorApp: TTutorApp;
  213.  
  214. begin
  215.   TutorApp.Init;
  216.   TutorApp.Run;
  217.   TutorApp.Done;
  218. end.
  219.